/**
 * 编号从low到high，如编号 321 的小球应当放入编号 3 + 2 + 1 = 6 的盒子
 * 求盒子中最多的球数量
 * @param {number} lowLimit
 * @param {number} highLimit
 * @return {number}
 */
var countBalls = function (lowLimit, highLimit) {
    let map = new Map()

    // 计算编号i的小球应该放在哪个盒子
    function countNum(num) {
        num = num.toString()
        let res = 0
        for (let i = 0; i < num.length; i++) {
            res += Number(num[i])
        }
        return res
    }

    // map统计每个编号的盒子对应的球数
    for (let i = lowLimit; i <= highLimit; i++) {
        if (map.has(countNum(i))) {
            map.set(countNum(i), map.get(countNum(i)) + 1)
        } else {
            map.set(countNum(i), 1)
        }
    }
    
    // 计算map的value的最大值
    return Math.max(...[...map.values()])
}
